package com.damu.xiaomi.service;

import com.damu.xiaomi.dao.GoodsMapper;
import com.damu.xiaomi.dao.GoodsTypeMapper;
import com.damu.xiaomi.entry.Goods;
import com.damu.xiaomi.entry.GoodsExample;
import com.damu.xiaomi.entry.GoodsType;
import com.damu.xiaomi.entry.GoodsTypeExample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @Fou Jack of all trades and master of none.
 * @date 2022/3/18 23:54
 */
@Service
public class GoodsShippingService {

    @Autowired
    private GoodsMapper goodsMapper;
    @Autowired
    private GoodsTypeService goodsTypeService;
    /**
     * 根据商品的一级类型查询商品
     * @param goodsType 二级商品类型
     * @return指定商品类型下的所有商品
     */
    public List<Goods> findGoodsWithType(GoodsType goodsType){
        GoodsExample ge  =new GoodsExample();
        ge.createCriteria().andGoodsTypeIdEqualTo(goodsType.getId());
        return goodsMapper.selectByExample(ge);
    }

    /**
     * 根据一级类型查询商品数据
     * @param goodstype 一级类型
     * @return 返回所有商品
     */
    public List<Goods> findGoodsWithToptype(GoodsType goodstype) {
        // 根据一级类型查询所有所属二级类型
        List<GoodsType> gt = goodsTypeService.findSecondLevel(goodstype);
        // 查询所有二级类型下的所有商品
        List<Goods> goodsList = new ArrayList<>();
        for (GoodsType goodsType : gt) {
            List<Goods> goodses = this.findGoodsWithType(goodsType);
            goodsList.addAll(goodses);
        }
        return goodsList;
    }


    /**
     * 更具名称模糊搜索商品数据
     * @param name 商品名称
     * @return 返回符搜索条件的商品
     */
    public List<Goods> searchGoodsWithName(String name){
        //构建条件对象
        GoodsExample ge = new GoodsExample();
        //此处需要添加两个%%，因为在mybatis生成器生成的代码中没有提供
        ge.createCriteria().andNameLike("%" + name + "%");
        return goodsMapper.selectByExample(ge);
    }

    /**
     * 根据id查询商品
     * @param id    商品编号
     * @return  返回查询到的商品
     */
    public Goods findGoodsWithId(Integer id){
        return goodsMapper.selectByPrimaryKey(id);
    }

}
